iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0
Kubernetes

Kubernetes~成為Devops工程師的必經試煉系列 第 16

Day 16 於Kubernates 架設 dotnet core mvc 專案

  • 分享至 

  • xImage
  •  

前言

今天會使用dotnet core CML 製作 dotnet coe mvc 專案, 並且將它包成docker container,並跑在 Minikubes 上。教學大綱如下:

  1. 建立dotnet core Webapi 專案
  2. 建立Docker Image
  3. 在本機運行Container
  4. 於Minikube 執行

建立dotnet core MVC 專案

我們可以在本機端新增一個資料夾,並且新增一個webapi專案

mkdir mywebmvc
dotnet new mvc

會在該目錄底下建立一個dotnet core mvc 的Project
這時將該專案執行起來,他會執行完restore後將該專案run起來

dotnet run

會在localhost:5000 起一個 dotnet core mvc的Application,

http://localhost:5000
則會顯示
Dotnet core mvc

建立Docker Image

我們將上述建立起來的Webapi Application包成 Docker Image。 首先要該專案底下加入Dockerfile.

Dockerfile

將程式包成Image時,都需要有一個 Dockerfile 來描述包裝過程,新增一個DOCKERFILE

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "mywebmvc.dll"]

  • FROM microsoft/dotnet:sdk AS build-env

    這行會載入程式需要的執行環境,會根據不同的需求下載不同的映像檔,這裡是指 microsoft/dotnet:2.0

  • WORKDIR /app

    在這個 Docker 中的 Linux 即將會建立一個目錄 /app

  • COPY *.csproj ./

    代表會將本機端與 *.csproj 同一層的所有檔案加到 Linux 的 /app 目錄底下

  • RUN dotnet restore

    執行dotnet restore,將相依的檔案下載下來

  • COPY . ./
    將所有檔案加到 Linux 的 /app 目錄底下

  • RUN dotnet publish -c Release -o out

    Publish目前的專案

  • FROM microsoft/dotnet:2.0-aspnetcore-runtime

    建立run time的 Image

  • WORKDIR /app

    在這個 Docker 中的 Linux 即將會建立一個目錄 /app

  • COPY --from=build-env /app/out .

 將build好的專案複製到/app/out目錄底下

  • ENTRYPOINT ["dotnet", "mywebmvc.dll"]

    設定進入點為 mywebmvc.dll

Docker Build


在該專案底下建好Dockerfile後執行以下指令

$ docker build . 

建立好後,可以查詢製作好的Image

$ docker image ls
REPOSITORY                   TAG                  IMAGE ID            CREATED              SIZE
<none>                       <none>               ca5ea1b4ba20        About a minute ago   1.96GB

在本機上運行containerized app

在包好 Docker Image 之後,我們可以先在本機上透過 docker指令 跑起我們的 Docker Container。記住你剛剛的 Docker Image ID,並輸入指令 docker run

在這之前要輸入以下指令,以免發生錯誤

docker container stop stoic_goldstine
docker container rm stoic_goldstine

現在我們可以執行以下的指令,將包好的Application 執行起來

docker run --name mywebmvc --env ASPNETCORE_ENVIRONMENT=Development -p 80:80 mywebmvc:latest

現在你可以在

http://localhost

看到你製作好的Docker Container

參考文章

  1. Deploy ASP.NET Core app to Kubernetes on Google Kubernetes Engine

  2. Dockerize a .NET Core application


上一篇
Day 15 Kubernetes 機密資料處理~Secrets
下一篇
Day 16 指定的 Pod 來運行特定的工作 ~ DaemonSet
系列文
Kubernetes~成為Devops工程師的必經試煉17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言